package v1

import (
	"devops-super/api"
	"devops-super/internal/model/entity"
	"devops-super/internal/model/mymodel"
	"github.com/gogf/gf/v2/frame/g"
)

// DeviceGroupGetPageLstReq 分页获取设备分组列表请求
type DeviceGroupGetPageLstReq struct {
	g.Meta `method:"get" path:"/deviceGroup/page-list" summary:"分页获取设备分组列表" tags:"设备分组"`
	*api.PageLstReq
	Name      string   `json:"name" description:"组名"`
	DeptId    int64    `json:"deptId" description:"deptId"`
	TimeRange []string `json:"timeRange"` // 时间范围[开始,结束]
}

// DeviceGroupGetPageLstRes 分页获取设备分组列表响应
type DeviceGroupGetPageLstRes struct {
	*api.PageLstRes[*mymodel.AppDeviceGroupResponse]
}

// DeviceGroupAddReq 新增设备分组请求
type DeviceGroupAddReq struct {
	g.Meta   `method:"post" path:"/deviceGroup" summary:"新增设备分组" tags:"设备分组"`
	GroupKey string `v:"required#分组标识不能为空" json:"groupKey"`
	Name     string `v:"required#分组名称不能为空" json:"name"`
	Purpose  string `json:"purpose"`
	Remark   string `json:"remark"`
	DeptId   int64  `json:"deptId"`
	ParentId int64  `json:"parentId,omitempty"` // 新增父分组ID
}

// DeviceGroupAddRes 新增设备分组响应
type DeviceGroupAddRes struct{}

// DeviceGroupUptReq 更新设备分组请求
type DeviceGroupUptReq struct {
	g.Meta   `method:"put" path:"/deviceGroup/{id}" summary:"更新设备分组" tags:"设备分组"`
	Id       int    `v:"min:1#分组ID必须" path:"id"`
	GroupKey string `v:"required#分组标识不能为空" json:"groupKey"`
	Name     string `v:"required#分组名称不能为空" json:"name"`
	Purpose  string `json:"purpose"`
	Remark   string `json:"remark"`
	DeptId   int64  `json:"deptId"`
	ParentId int64  `json:"parentId,omitempty"` // 新增父分组ID
}

// DeviceGroupUptRes 更新设备分组响应
type DeviceGroupUptRes struct{}

// DeviceGroupDelReq 删除设备分组请求
type DeviceGroupDelReq struct {
	g.Meta `method:"delete" path:"/deviceGroup/{id}" summary:"删除设备分组" tags:"设备分组"`
	Id     int `v:"min:1#分组ID必须" path:"id"`
}

// DeviceGroupDelRes 删除设备分组响应
type DeviceGroupDelRes struct{}

// DeviceGroupGetOneReq 获取单条设备分组请求
type DeviceGroupGetOneReq struct {
	g.Meta `method:"get" path:"/deviceGroup/getOne" summary:"获取单条设备分组" tags:"设备分组"`
	Id     int `v:"min:1#分组ID必须" json:"id"`
}

// DeviceGroupGetOneRes 获取单条设备分组响应
type DeviceGroupGetOneRes struct {
	Info *entity.AppDeviceGroup `json:"info"`
}

// DeviceGroupGetOptionsReq 获取设备分组选项请求
type DeviceGroupGetOptionsReq struct {
	g.Meta     `method:"get" path:"/deviceGroup/getOptions" summary:"获取设备分组选项" tags:"设备分组"`
	FieldKey   string `json:"fieldKey"`   // 自定义value字段
	FieldLabel string `json:"fieldLabel"` // 自定义label字段
	DeptId     int64  `json:"deptId"`
}

// DeviceGroupGetOptionsRes 获取设备分组选项响应
type DeviceGroupGetOptionsRes struct {
	Options []*entity.AppDeviceGroup `json:"options"`
}
